package config

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"

	"github.com/minio/minio-go/v7"
)

type Config struct {
	Mysql   Mysql
	UserWeb UserWeb
	Redis   Redis
	MinIO   MinIO
}
type Redis struct {
	PassWord string `json:"pass_word"`
	Addr     string `json:"addr"`
	Db       int    `json:"db"`
}
type Mysql struct {
	Driver    string `json:"driver"`
	User      string `json:"user"`
	PassWord  string `json:"pass_word"`
	Host      string `json:"host"`
	Port      string `json:"port"`
	DbName    string `json:"db_name"`
	Charset   string `json:"charset"`
	ShowSql   bool   `json:"show_sql"`
	ParseTime string `json:"parse_time"`
	Loc       string `json:"loc"`
}
type UserWeb struct {
	ApiPort   string `json:"api_port"`
	ApiSecret string `json:"api_secret"`
	FilePort  string `json:"file_port"`
	Host      string `json:"host"`
}
type MinIO struct {
	MinIOClient     *minio.Client
	MinioSsl        bool   `json:"minio_ssl"`
	MinioEndpoint   string `json:"minio_endpoint"`
	AccessKeyId     string `json:"access_key_id"`
	SecretAccessKey string `json:"secret_access_key"`
	Location        string `json:"location"`
	BucketName      string `json:"bucket_name"`
}

var Conf *Config

// func init() {
// 	Init("C:\\Users\\admin\\Downloads\\QXY3\\dy-demo\\internal\\configs\\config.json")
// }

//path存的是config.json的路径，一般用os.GetWd()+"xx"获取
func Init(path string) *Config {

	config := new(Config)

	file, err := os.Open(path)
	if err != nil {
		fmt.Println(err)
		panic("打开配置文件错误" + path)
	}

	confByte, err := ioutil.ReadAll(file)
	if err != nil {
		panic("读取配置文件错误")
	}

	err = json.Unmarshal(confByte, config)
	if err != nil {
		fmt.Println(err)
		fmt.Println("*************")
		fmt.Println(path)
		panic("解析配置文件错误")
	}

	Conf = config
	return Conf
}
